
package br.com.velp.sudecap.hibernate.intercept;

import br.com.velp.sudecap.enumerator.TipoOperacaoEnum;
import java.io.Serializable;
import org.hibernate.event.spi.PostDeleteEvent;
import org.hibernate.event.spi.PostDeleteEventListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

/**
 * <sumario>
 * <objetivo> "Rastreabilidade" </objetivo>
 * <autor> EDUARDO SANTOS DE OLIVEIRA </autor>
 * <versao>1.0.0.0</versao>
 * <data_criacao> 31.03.2013 </data_criacao>
 * <data_ultima_alteracao> N/A </data_ultima_alteracao>
 * <descricao> Customizando o Evento de PostDelete do Hibernate, 
 *             Para Geração de Registros de Log de Auditoria do Sistema.
 *             Após a Execução de Qualquer DELETE, É Gerado Um Registro de LOG </descricao>
 * </sumario>
 */
@Component
public class CustomPostDeleteEventListener implements PostDeleteEventListener, Serializable {
    
    public static final Long serialVersionUID = 1l;
    
    @Autowired
    private RegistraLogAuditoria registraLogAuditoria;    
    
    @Override
    public void onPostDelete(PostDeleteEvent pde) {
        this.registraLogAuditoria.registrarLog(pde.getEntity(), pde.getSession(), TipoOperacaoEnum.DELETE);        
    }

}
